#ifndef PLC2LLVM_FUNCTIONINOUT_H
#define PLC2LLVM_FUNCTIONINOUT_H

#include <vector>
#include "plc2llvm/PLCSymbols/PLCVariable.h"
#include "plc2llvm/PLCSymbols/PLCNamespaceDeclSymbol.h"

class FunctionInOut {
private:
    //直接返回值的类型，没有则为-1
    int returnTypeId;
    //输入参数，对应var_input
    std::vector<PLCVariable*> inputs;
    //输出参数，对应var_output
    std::vector<PLCVariable*> outputs;
    //出、入参数，对应var_in_out_put
    std::vector<PLCVariable*> inOutputs;
public:
    int getReturnTypeId() const;
    void setReturnTypeId(int returnTypeId);

    const std::vector<PLCVariable *> &getInputs() const;
    void addInput(PLCVariable* inputVariable);

    const std::vector<PLCVariable *> &getOutputs() const;
    void addOutput(PLCVariable* outputVariable);

    const std::vector<PLCVariable *> &getInOutputs() const;
    void addInOutput(PLCVariable* inOutput);
};


#endif
